关联对象参考 您所在的位置:网站首页 django 多对多模型 关联对象参考

关联对象参考

2024-05-22 03:10| 来源: 网络整理| 查看: 265

异步版本: aremove

从相关对象集中删除指定的模型对象:

>>> b = Blog.objects.get(id=1) >>> e = Entry.objects.get(id=234) >>> b.entry_set.remove(e) # Disassociates Entry e from Blog b.

与 add() 类似,在上面的例子中调用 e.save() 来执行更新。但是,对多对多关系使用 remove(),将使用 QuerySet.delete() 删除关系,这意味着没有调用模型 save() 方法;如果想在删除关系时执行自定义代码,请监听 m2m_changed 信号。

对于多对多关系,remove() 接受模型实例或字段值,通常是主键,作为 *objs 参数。

对于 ForeignKey 对象,只有当 null=True 时,这个方法才存在。如果相关字段不能设置为 None (NULL),那么一个对象就不能从一个关系中删除而不被添加到另一个关系中。在上面的例子中,从 b.entry_set() 中删除 e 相当于做了 e.blog = None,由于 blog ForeignKey` 没有 null=True,所以这是无效的。

对于 ForeignKey 对象,这个方法接受一个 bulk 参数来控制如何执行操作。如果 True (默认),则使用 QuerySet.update()。如果 bulk=False,则调用每个单独模型实例的 save() 方法。这将触发 pre_save 和 post_save 信号,并以牺牲性能为代价。

对于多对多关系,bulk 关键字参数不存在。

Changed in Django 4.2:

已添加了 aremove() 方法。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有